package com.v.mypersonaltrainer.chart;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.achartengine.ChartFactory;
import org.achartengine.chart.BarChart.Type;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.CategorySeries;
import org.achartengine.model.MultipleCategorySeries;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import org.json.JSONArray;
import org.json.JSONObject;
import com.database.sqlite.DataBaseHelper;
import com.v.mypersonaltrainer.R;
import android.app.Activity;
import android.content.Intent;
import android.database.SQLException;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
public class MainActivity extends Activity {
private String[] mMonth = new String[] { "10", "11", "12", "13", "14",
"15", "16", "17", "18", "19", "20", "21", "22", "23", "24" };
ImageButton imageButtonChart;
ArrayList<Integer> calBurntArrayList = new ArrayList<Integer>();
int[] daily = new int[15];
double h;
int age;
double W;
double GW;
int duration;
int calG;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// dbGetSumCalories();
// setContentView(R.layout.activity_main);
// imageButtonChart=(ImageButton)findViewById(R.id.imageButtonChart);
openChart();
// Getting reference to the button btn_chart
}
public static int[] convertIntegers(List<Integer> integers) {
int[] ret = new int[integers.size()];
for (int i = 0; i < ret.length; i++) {
ret[i] = integers.get(i).intValue();
}
return ret;
}
private void openChart() {
Runnable runnable = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
URL url = new URL("http://58.27.132.54:443/health/getGraphJSON?");
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
int resCode = urlConnection.getResponseCode();
if (resCode == 200) {
InputStream is = new BufferedInputStream(
urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
String result = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject c = jArray.getJSONObject(i);
// Storing each json item in variable
Integer ExerciseName = c.getInt("CaloriesDiff");
calBurntArrayList.add(ExerciseName);
// Toast.makeText(getApplicationContext(),
// ExerciseName+" ", Toast.LENGTH_LONG).show();
}
} else
resCode = -1;
} catch (Exception e) {
e.printStackTrace();
}
}
};
runnable.run();
double sumCal=0;
ArrayList<Integer> calRight= new ArrayList<Integer>();
for (int i = calBurntArrayList.size()-1; i >=0 ; i--) {
calRight.add(calBurntArrayList.get(i).intValue());
}
for (int j = 0; j < calRight.size(); j++) {
daily[j] = calRight.get(j).intValue();
sumCal=daily[j]+sumCal;
}
sumCal=sumCal/15;
int[] x = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
/*
* int[] daily = { 1714, 1331, 1902, 1424, 1815, 1857, 1508, 1804, 1818,
* 1550, 1464, 1983, 1497, 1479, 1869, 1978 };
*/
Runnable runnable2 = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
try {
URL url = new URL("http://58.27.132.54:443/health/getUserJSON?");
HttpURLConnection urlConnection = (HttpURLConnection) url
.openConnection();
int resCode = urlConnection.getResponseCode();
if (resCode == 200) {
InputStream is = new BufferedInputStream(
urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(
new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
String result = "";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
JSONArray jArray = new JSONArray(result);
for (int i = 0; i < jArray.length(); i++) {
JSONObject c = jArray.getJSONObject(i);
// Storing each json item in variable
h = c.getDouble("Height");
W = c.getDouble("Weight");
GW = c.getDouble("WeightGoal");
duration = c.getInt("GoalWeightDuration");
age = c.getInt("Age");
}
} else
resCode = -1;
} catch (Exception e) {
e.printStackTrace();
}
}
};
runnable2.run();
h = h * 100;
double calories = ((10 * (W)) + (6.5 * h) - (5 * age) * 1.55);
double sum = GW- W;
double cal = Math.abs(sum)
/ (duration / 7) * 2;
calories = calories - cal;
int[] goal= new int[15];
int[] goal1= new int[15];
for (int i = 0; i < 15; i++) {
goal[i]=(int)calories;
goal1[i]=(int) sumCal;
}
/*= { 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672, 1672,
1672, 1672, 1672, 1672, 1672, 1672, 1672 };
int[] goal1 = { 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1687,
1687, 1687, 1687, 1687, 1687, 1687, 1687 };
*/// Creating an XYSeries for Income
// CategorySeries incomeSeries = new CategorySeries("Income");
XYSeries dailySeries = new XYSeries("Daily");
// Creating an XYSeries for Income
XYSeries goalSeries = new XYSeries("Goal");
// Adding data to Income and Expense Series
XYSeries avgSeries = new XYSeries("Avg");
// Adding data to Income and Expense Series
for (int i = 0; i < x.length; i++) {
dailySeries.add(i, daily[i]);
goalSeries.add(i, goal[i]);
avgSeries.add(i, goal1[i]);
}
// Creating a dataset to hold each series
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
// Adding Income Series to the dataset
dataset.addSeries(dailySeries);
// Adding Expense Series to dataset
dataset.addSeries(goalSeries);
dataset.addSeries(avgSeries);
// Creating XYSeriesRenderer to customize incomeSeries
XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
incomeRenderer.setColor(Color.rgb(130, 130, 230));
incomeRenderer.setFillPoints(true);
incomeRenderer.setLineWidth(2);
incomeRenderer.setDisplayChartValues(true);
// Creating XYSeriesRenderer to customize expenseSeries
XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
expenseRenderer.setColor(Color.rgb(220, 80, 80));
expenseRenderer.setFillPoints(true);
expenseRenderer.setLineWidth(2);
expenseRenderer.setDisplayChartValues(true);
// Creating XYSeriesRenderer to customize expenseSeries
XYSeriesRenderer goalRenderer = new XYSeriesRenderer();
goalRenderer.setColor(Color.rgb(200, 100, 150));
goalRenderer.setFillPoints(true);
goalRenderer.setLineWidth(2);
goalRenderer.setDisplayChartValues(true);
// Creating a XYMultipleSeriesRenderer to customize the whole chart
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
multiRenderer.setXLabels(0);
multiRenderer.setChartTitle("Daily Calories vs Goal Calories");
multiRenderer.setXTitle("June 2013");
multiRenderer.setYTitle("Calories");
multiRenderer.setZoomButtonsVisible(true);
for (int i = 0; i < x.length; i++) {
multiRenderer.addXTextLabel(i, mMonth[i]);
}
// Adding incomeRenderer and expenseRenderer to multipleRenderer
// Note: The order of adding dataseries to dataset and renderers to
// multipleRenderer
// should be same
multiRenderer.addSeriesRenderer(incomeRenderer);
multiRenderer.addSeriesRenderer(expenseRenderer);
multiRenderer.addSeriesRenderer(goalRenderer);
// Creating an intent to plot bar chart using dataset and
// multipleRenderer
Intent intent = ChartFactory.getLineChartIntent(getBaseContext(),
dataset, multiRenderer);
// Start Activity
startActivity(intent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}